Assembly Language এ System Calls (System Calls in Assembly Language)

Computer Programming - অ্যাসেম্বলি প্রোগ্রামিং (Assembly Programming)
284
284

System Calls হলো একটি প্রোগ্রামের মাধ্যমে অপারেটিং সিস্টেমের সেবা ব্যবহার করার পদ্ধতি। Assembly Language-এ System Calls ব্যবহারের মাধ্যমে আমরা বিভিন্ন অপারেটিং সিস্টেম-লেভেলের কাজ সম্পন্ন করতে পারি, যেমন ফাইল পরিচালনা, ইনপুট/আউটপুট অপারেশন, প্রক্রিয়া পরিচালনা ইত্যাদি। System Calls সরাসরি কোর অপারেটিং সিস্টেমের সাথে যোগাযোগ করে এবং প্রোগ্রামের কার্যক্ষমতা বাড়াতে সহায়তা করে।


System Call-এর কাজের পদ্ধতি:

  • System Calls CPU-র নির্দিষ্ট ইন্টারাপ্ট ব্যবহার করে কার্যকর করা হয়। সাধারণত, INT নির্দেশনা ব্যবহার করে সিস্টেম কল করা হয়।
  • System Call-এর ধরন এবং অপারেশন নির্বাচনের জন্য রেজিস্টারগুলির মাধ্যমে নির্দিষ্ট কোড প্রদান করা হয়।

Linux System Calls উদাহরণ:
Linux অপারেটিং সিস্টেমে System Calls সম্পন্ন করার জন্য সাধারণত INT 0x80 ব্যবহার করা হয়। 64-বিট সিস্টেমে syscall নির্দেশনা ব্যবহৃত হয়।

সাধারণ System Calls এবং তাদের উদাহরণ:

  1. Write System Call:
    • ব্যবহার: স্ক্রিন বা ফাইলের মধ্যে ডেটা লিখতে ব্যবহার করা হয়।
    • রেজিস্টার বিন্যাস:
      • EAX = 4 (System Call নম্বর, write)
      • EBX = ফাইল ডিসক্রিপ্টর (1 হলে stdout)
      • ECX = মেমোরি লোকেশনের ঠিকানা (যেখানে লেখার ডেটা সংরক্ষিত)
      • EDX = লেখার ডেটার দৈর্ঘ্য
    • উদাহরণ:

      section .data
      msg db 'Hello, World!', 0xA  ; মেসেজ সংরক্ষণ
      
      section .text
      global _start
      
      _start:
          mov EAX, 4       ; System call number for write
          mov EBX, 1       ; File descriptor (stdout)
          mov ECX, msg     ; Message address
          mov EDX, 13      ; Message length
          int 0x80         ; Interrupt to call kernel
      
          mov EAX, 1       ; System call number for exit
          xor EBX, EBX     ; Exit status 0
          int 0x80         ; Interrupt to exit
  2. Read System Call:
    • ব্যবহার: কীবোর্ড বা ফাইল থেকে ইনপুট পড়তে ব্যবহার করা হয়।
    • রেজিস্টার বিন্যাস:
      • EAX = 3 (System Call নম্বর, read)
      • EBX = ফাইল ডিসক্রিপ্টর (0 হলে stdin)
      • ECX = ইনপুট স্টোর করার ঠিকানা
      • EDX = পড়ার ডেটার সর্বোচ্চ দৈর্ঘ্য
    • উদাহরণ:

      section .bss
      buffer resb 10      ; 10 বাইটের জন্য স্থান রিজার্ভ
      
      section .text
      global _start
      
      _start:
          mov EAX, 3       ; System call number for read
          mov EBX, 0       ; File descriptor (stdin)
          mov ECX, buffer  ; Buffer address
          mov EDX, 10      ; Maximum length to read
          int 0x80         ; Interrupt to call kernel
      
          ; পরবর্তী অপারেশন যেখানে ইনপুট প্রসেস করা হবে
      
          mov EAX, 1       ; Exit system call
          xor EBX, EBX     ; Exit status 0
          int 0x80         ; Interrupt to exit

System Call ব্যবহারের গুরুত্বপূর্ণ বিষয়:

  • Interrupt: INT 0x80 ব্যবহার করে Kernel-কে সিস্টেম কল করা হয়।
  • Return Value: সিস্টেম কল শেষ হওয়ার পর ফলাফল সাধারণত EAX রেজিস্টারে রিটার্ন করা হয়, যা নির্দেশ করে সিস্টেম কল সফল হয়েছে কিনা।

System Call-এর পদ্ধতি এবং নির্দেশিকা

System CallNumber (Linux)ব্যবহার
exit1প্রোগ্রাম শেষ করার জন্য
write4স্ক্রিন বা ফাইলে ডেটা লেখার জন্য
read3কীবোর্ড বা ফাইল থেকে ডেটা পড়ার জন্য
open5ফাইল ওপেন করার জন্য
close6ফাইল বন্ধ করার জন্য

Modern 64-bit Linux System Calls:
64-বিট সিস্টেমে syscall নির্দেশনা ব্যবহার করা হয়, যেখানে সিস্টেম কল নম্বর RAX রেজিস্টারে এবং প্যারামিটারগুলি RDI, RSI, RDX, R10, R8, এবং R9 রেজিস্টারে পাঠানো হয়।

উদাহরণ (64-bit):

section .data
msg db 'Hello, 64-bit World!', 0xA
len equ $ - msg

section .text
global _start

_start:
    mov RAX, 1       ; System call number for write
    mov RDI, 1       ; File descriptor (stdout)
    mov RSI, msg     ; Message address
    mov RDX, len     ; Message length
    syscall          ; Call kernel

    mov RAX, 60      ; System call number for exit
    xor RDI, RDI     ; Exit status 0
    syscall          ; Call kernel to exit

সারসংক্ষেপ

Assembly Language-এ System Calls সরাসরি অপারেটিং সিস্টেমের সাথে যোগাযোগ করার একটি কার্যকর পদ্ধতি। System Calls ব্যবহার করে আমরা প্রোগ্রামের মাধ্যমে ইনপুট/আউটপুট অপারেশন, ফাইল ম্যানেজমেন্ট, এবং অন্যান্য সিস্টেম লেভেলের কাজ সম্পন্ন করতে পারি। INT 0x80 নির্দেশনা এবং syscall ব্যবহার করে Assembly Language প্রোগ্রামিংয়ে System Calls কার্যকর করা হয়, যা প্রোগ্রামের কার্যক্ষমতা এবং সক্ষমতা বৃদ্ধি করে।

common.content_added_by

System Calls এর ধারণা এবং প্রয়োজনীয়তা

258
258

System Calls হলো প্রোগ্রাম এবং অপারেটিং সিস্টেমের মধ্যে সংযোগ স্থাপনের একটি পদ্ধতি, যা অ্যাপ্লিকেশন প্রোগ্রামগুলোকে অপারেটিং সিস্টেমের সেবা ও রিসোর্স ব্যবহার করার সুযোগ দেয়। সাধারণত, অ্যাপ্লিকেশন প্রোগ্রাম সরাসরি হার্ডওয়্যার বা অপারেটিং সিস্টেমের নিম্ন স্তরের কাজ করতে পারে না, তাই সিস্টেম কল ব্যবহার করা হয়।


System Calls এর ধারণা:

System Calls হলো বিশেষ ফাংশন বা পদ্ধতি যা অ্যাপ্লিকেশন প্রোগ্রামকে অপারেটিং সিস্টেমের কাজগুলির জন্য একটি নির্দিষ্ট অনুরোধ করতে সক্ষম করে। উদাহরণস্বরূপ, ফাইল পড়া বা লেখা, প্রসেস তৈরি করা, এবং মেমোরি পরিচালনা করা।

System Call এর কাজের পদ্ধতি:

  1. অ্যাপ্লিকেশন প্রোগ্রাম একটি নির্দিষ্ট সিস্টেম কল ডাকে।
  2. অপারেটিং সিস্টেম সেই কলটি গ্রহণ করে এবং প্রয়োজনীয় কাজ সম্পন্ন করে।
  3. অপারেটিং সিস্টেম ফলাফলটি অ্যাপ্লিকেশন প্রোগ্রামে ফেরত দেয়।

System Calls এর প্রয়োজনীয়তা:

  1. অপারেটিং সিস্টেমের সেবা অ্যাক্সেস:
    • প্রোগ্রামগুলো অপারেটিং সিস্টেমের মাধ্যমে বিভিন্ন সেবা যেমন ফাইল পরিচালনা, মেমোরি ম্যানেজমেন্ট, এবং প্রক্রিয়া পরিচালনা করতে পারে।
    • উদাহরণ: ফাইল সিস্টেমে ডেটা পড়া বা লেখা।
  2. হার্ডওয়্যার অ্যাক্সেস:
    • System Calls প্রোগ্রামকে সরাসরি হার্ডওয়্যার অ্যাক্সেস করার সুযোগ দেয়, যেমন ইনপুট/আউটপুট ডিভাইস থেকে ডেটা নেওয়া বা পাঠানো।
    • উদাহরণ: কীবোর্ড থেকে ইনপুট গ্রহণ করা বা ডিসপ্লেতে আউটপুট পাঠানো।
  3. প্রোগ্রামের সুরক্ষা:
    • System Calls ব্যবহার করে অপারেটিং সিস্টেম প্রোগ্রামগুলোকে হার্ডওয়্যার এবং অন্যান্য গুরুত্বপূর্ণ রিসোর্স সরাসরি অ্যাক্সেস করা থেকে রক্ষা করে। এটি সিস্টেম সুরক্ষিত রাখে এবং অবাঞ্ছিত পরিবর্তন প্রতিরোধ করে।
  4. প্রক্রিয়াগুলোর মধ্যে যোগাযোগ (IPC):
    • System Calls ব্যবহৃত হয় একাধিক প্রক্রিয়ার মধ্যে তথ্য আদান-প্রদান এবং সমন্বয় করার জন্য।
    • উদাহরণ: pipe(), message queue এবং shared memory

System Calls এর উদাহরণ:

Linux অপারেটিং সিস্টেমে কিছু সাধারণ System Call:

  1. read(): একটি ফাইল বা ইনপুট ডিভাইস থেকে ডেটা পড়ার জন্য ব্যবহৃত।

    int fd = open("file.txt", O_RDONLY);
    char buffer[100];
    read(fd, buffer, 100);
  2. write(): একটি ফাইল বা আউটপুট ডিভাইসে ডেটা লেখার জন্য ব্যবহৃত।

    write(fd, buffer, 100);
  3. fork(): একটি নতুন প্রসেস তৈরি করতে ব্যবহৃত।

    pid_t pid = fork();
    if (pid == 0) {
        // Child process
    } else {
        // Parent process
    }
  4. exec(): একটি প্রসেসের সাথে একটি নতুন প্রোগ্রাম লোড করতে ব্যবহৃত।

    execl("/bin/ls", "ls", NULL);
  5. exit(): একটি প্রসেস শেষ করতে ব্যবহৃত।

    exit(0);

System Calls এর প্রকারভেদ:

  1. Process Control:
    • প্রসেস তৈরি, শেষ করা, স্থগিত করা ইত্যাদির জন্য ব্যবহৃত হয়।
    • উদাহরণ: fork(), exec(), exit()
  2. File Management:
    • ফাইল তৈরি, পড়া, লেখা, মুছে ফেলা ইত্যাদির জন্য ব্যবহৃত হয়।
    • উদাহরণ: open(), read(), write(), close()
  3. Device Management:
    • ডিভাইসগুলো থেকে ইনপুট/আউটপুট পরিচালনা করার জন্য ব্যবহৃত হয়।
    • উদাহরণ: ioctl(), read(), write()
  4. Information Maintenance:
    • সিস্টেমের অবস্থা বা কনফিগারেশন জানতে ব্যবহৃত হয়।
    • উদাহরণ: getpid(), alarm()
  5. Communication:
    • প্রক্রিয়াগুলোর মধ্যে তথ্য বিনিময় করার জন্য ব্যবহৃত হয়।
    • উদাহরণ: pipe(), shmget()

সারসংক্ষেপ

System Calls প্রোগ্রাম এবং অপারেটিং সিস্টেমের মধ্যে একটি ব্রিজ হিসেবে কাজ করে, যা প্রোগ্রামকে অপারেটিং সিস্টেমের বিভিন্ন সেবা এবং রিসোর্স ব্যবহার করতে সহায়তা করে। এগুলি সিস্টেম সুরক্ষা এবং কার্যক্ষমতা নিশ্চিত করে এবং বিভিন্ন প্রক্রিয়া, ফাইল, ডিভাইস, এবং যোগাযোগ পরিচালনার জন্য অপরিহার্য।

common.content_added_by

Linux এবং Windows এ System Call Interface

232
232

System Call Interface (SCI) হলো একটি প্রোগ্রামিং ইন্টারফেস যা অপারেটিং সিস্টেমের কোর (kernel) এর সাথে ব্যবহারকারী প্রোগ্রামের যোগাযোগ নিশ্চিত করে। এটি অপারেটিং সিস্টেমের গুরুত্বপূর্ণ ফাংশনগুলো, যেমন ফাইল অপারেশন, প্রসেস ম্যানেজমেন্ট, এবং মেমোরি ম্যানেজমেন্ট পরিচালনা করতে ব্যবহার করা হয়। Linux এবং Windows অপারেটিং সিস্টেমের System Call Interface-এর কাঠামো এবং ব্যবহারের মধ্যে কিছু গুরুত্বপূর্ণ পার্থক্য রয়েছে।


Linux এ System Call Interface

Linux System Call Interface সাধারণত Assembly Language বা উচ্চ-স্তরের ভাষা ব্যবহার করে প্রোগ্রামারের অ্যাপ্লিকেশন থেকে kernel ফাংশনগুলো কল করতে ব্যবহৃত হয়। Linux-এ system call ইন্টারফেস সাধারণত int 0x80 বা syscall নির্দেশনা ব্যবহার করে কাজ করে।

প্রক্রিয়া:

  1. সিস্টেম কল নম্বরটি eax রেজিস্টারে লোড করা হয়।
  2. প্রয়োজনীয় প্যারামিটারগুলো ebx, ecx, edx, esi, এবং edi রেজিস্টারে লোড করা হয়।
  3. int 0x80 বা syscall নির্দেশনা ব্যবহার করে system call কার্যকর করা হয়।

Assembly উদাহরণ:

section .text
    global _start

_start:
    ; sys_write সিস্টেম কল
    mov eax, 4          ; sys_write এর সিস্টেম কল নম্বর (4)
    mov ebx, 1          ; ফাইল ডিসক্রিপ্টর (stdout)
    mov ecx, msg        ; মেসেজের অ্যাড্রেস
    mov edx, 13         ; মেসেজের দৈর্ঘ্য
    int 0x80            ; সিস্টেম কল

    ; sys_exit সিস্টেম কল
    mov eax, 1          ; sys_exit এর সিস্টেম কল নম্বর (1)
    xor ebx, ebx        ; এক্সিট কোড 0
    int 0x80            ; সিস্টেম কল

section .data
msg db 'Hello, World!', 0

নতুন ইন্টারফেস (syscall):

  • নতুন ৬৪-বিট আর্কিটেকচারে syscall নির্দেশনা ব্যবহার করা হয়, যা int 0x80 এর চেয়ে দ্রুত।
  • System call নম্বর rax রেজিস্টারে এবং প্যারামিটারগুলো rdi, rsi, rdx, r10, r8, এবং r9 রেজিস্টারে লোড করা হয়।

Windows এ System Call Interface

Windows System Call Interface সাধারণত API (Application Programming Interface) ব্যবহার করে অ্যাপ্লিকেশন এবং kernel-এর মধ্যে যোগাযোগ স্থাপন করে। Windows-এ system call সরাসরি ব্যবহৃত হয় না; বরং, Windows API কলগুলো kernel32.dll বা ntdll.dll লাইব্রেরির মাধ্যমে kernel-mode ফাংশনে পৌঁছায়।

প্রক্রিয়া:

  1. Windows API ব্যবহার করে সিস্টেম ফাংশন কল করা হয়।
  2. API কলগুলো kernel32.dll বা ntdll.dll এর মাধ্যমে kernel-mode ফাংশনে ম্যাপ করা হয়।
  3. Windows kernel সেই ফাংশন কার্যকর করে এবং রেসপন্স প্রদান করে।

উদাহরণ:
C/C++-এ Windows API ব্যবহার করে system call:

#include <windows.h>
#include <stdio.h>

int main() {
    printf("Hello, World!\n");
    return 0;
}

নির্দেশনার কার্যপ্রণালী:

  • Windows-এ system call interface ntdll.dll এর মাধ্যমে কাজ করে, যা kernel-level API ফাংশন, যেমন NtWriteFile, NtCreateProcess, ইত্যাদি ব্যবহৃত হয়।
  • Windows-এ সাধারণত syscall বা sysenter নির্দেশনা ব্যবহার করা হয় যা kernel-mode এ সিস্টেম কল কার্যকর করে।

Linux এবং Windows System Call Interface এর মধ্যে পার্থক্য

বৈশিষ্ট্যLinuxWindows
ইন্টারফেস পদ্ধতিসরাসরি int 0x80 বা syscall ব্যবহার করে।Windows API (kernel32.dll, ntdll.dll) মাধ্যমে।
সিস্টেম কল নম্বরনির্দিষ্ট রেজিস্টারে লোড করা হয় (eax, rax)।সরাসরি ব্যবহার করা হয় না, API মাধ্যমে ম্যাপ হয়।
কাস্টম সিস্টেম কলব্যবহারকারীরা প্রয়োজন হলে কাস্টম system call তৈরি করতে পারে।সরাসরি সমর্থন নেই, তবে ড্রাইভার বা kernel-mode কোডের মাধ্যমে।
ব্যবহারসাধারণত অ্যাডভান্সড প্রোগ্রামার বা kernel-level প্রোগ্রামিংয়ে ব্যবহৃত।সাধারণ অ্যাপ্লিকেশন প্রোগ্রামিংয়ে API ব্যবহৃত।
আর্কিটেকচারওপেন সোর্স, পরিবর্তন করা যায়।ক্লোজড সোর্স, Microsoft দ্বারা নিয়ন্ত্রিত।

সারসংক্ষেপ

Linux এবং Windows উভয় অপারেটিং সিস্টেমেই System Call Interface ব্যবহার করা হয়, তবে তাদের পদ্ধতি ভিন্ন। Linux-এ সরাসরি int 0x80 বা syscall ব্যবহার করা যায়, যেখানে Windows-এ API কল ব্যবহার করে kernel-mode ফাংশন কার্যকর করা হয়। Linux সিস্টেম কল পদ্ধতি সরাসরি এবং প্রোগ্রামার-কেন্দ্রিক, যেখানে Windows পদ্ধতি API-কেন্দ্রিক এবং সাধারণ ব্যবহারকারীদের জন্য সহজতর।

common.content_added_by

INT 80h এবং INT 2Eh এর ব্যবহার

216
216

Assembly Language-এ INT নির্দেশনা ইন্টারাপ্ট কলের মাধ্যমে সিস্টেমের বিভিন্ন সেবা অ্যাক্সেস করতে ব্যবহৃত হয়। INT 80h এবং INT 2Eh হলো দুইটি সাধারণ ইন্টারাপ্ট যা ভিন্ন ভিন্ন উদ্দেশ্যে ব্যবহৃত হয়। নিচে এই দুই ইন্টারাপ্টের বিস্তারিত আলোচনা করা হলো:


INT 80h (Linux System Call Interrupt):

  • সংজ্ঞা: INT 80h হলো একটি ইন্টারাপ্ট যা লিনাক্স অপারেটিং সিস্টেমে সিস্টেম কলের মাধ্যমে কোর সেবা এবং ফাংশন অ্যাক্সেস করতে ব্যবহৃত হয়। এটি ব্যবহার করে ফাইল অপারেশন, প্রসেস ম্যানেজমেন্ট, মেমোরি ম্যানেজমেন্ট ইত্যাদি করা যায়।
  • ব্যবহারিক ধাপ:
    1. EAX রেজিস্টারে সিস্টেম কল নম্বর লোড করা হয়, যা নির্দিষ্ট সেবা নির্দেশ করে।
    2. অন্যান্য রেজিস্টার যেমন EBX, ECX, EDX ইত্যাদিতে প্যারামিটার লোড করা হয়।
    3. INT 80h নির্দেশনা কার্যকর করা হয়।
  • ব্যবহারিক উদাহরণ:

    ; Linux এ "Hello, World!" মেসেজ প্রিন্ট করার উদাহরণ
    section .data
    msg db 'Hello, World!', 0xA    ; মেসেজ এবং নতুন লাইন
    
    section .text
    global _start
    
    _start:
        ; সিস্টেম কল: write (1, msg, 13)
        MOV EAX, 4          ; write সিস্টেম কল নম্বর
        MOV EBX, 1          ; ফাইল ডিসক্রিপ্টর (stdout)
        MOV ECX, msg        ; মেসেজের ঠিকানা
        MOV EDX, 13         ; মেসেজের দৈর্ঘ্য
        INT 80h             ; সিস্টেম কল
    
        ; সিস্টেম কল: exit (0)
        MOV EAX, 1          ; exit সিস্টেম কল নম্বর
        XOR EBX, EBX        ; এক্সিট কোড 0
        INT 80h             ; সিস্টেম কল

ব্যবহার:

  • লিনাক্স সিস্টেমে সরাসরি সিস্টেম কল কার্যকর করার জন্য INT 80h ব্যবহৃত হয়।
  • ফাইল অপারেশন, প্রক্রিয়া চালু/বন্ধ, মেমোরি বরাদ্দ ইত্যাদি।

INT 2Eh (Windows System Call Interrupt):

  • সংজ্ঞা: INT 2Eh হলো একটি ইন্টারাপ্ট যা উইন্ডোজ অপারেটিং সিস্টেমে কোর সেবা বা কেয়ার্নেল ফাংশন অ্যাক্সেস করতে ব্যবহৃত হয়। এটি মূলত পুরোনো DOS এবং Windows 9x/ME সিস্টেমে ব্যবহৃত হত।
  • ব্যবহারিক ধাপ:
    • INT 2Eh ব্যবহারের মাধ্যমে কেয়ার্নেল মোডে কোর সেবা কার্যকর করা হত, তবে আধুনিক উইন্ডোজ সিস্টেমে এটি সাধারণত ব্যবহার হয় না।
    • উইন্ডোজ NT এবং পরবর্তী সিস্টেমে NTDLL.dll এবং অন্যান্য API এর মাধ্যমে সিস্টেম কল করা হয়।
  • ব্যবহারিক উদাহরণ:

    ; INT 2Eh এর একটি সাধারণ ব্যবহারের উদাহরণ (পুরোনো সিস্টেমে)
    MOV AX, 4A00h          ; DOS 4A সিস্টেম কল (মেমোরি বরাদ্দ)
    MOV BX, 100h           ; মেমোরি ব্লকের আকার
    INT 2Eh                ; ইন্টারাপ্ট কল

ব্যবহার:

  • পুরোনো Windows এবং DOS সিস্টেমে সিস্টেম সেবা অ্যাক্সেস করার জন্য।
  • আধুনিক উইন্ডোজ সিস্টেমে এটি এখন আর ব্যবহৃত হয় না এবং এর পরিবর্তে API কল এবং কেয়ার্নেল ফাংশন ব্যবহৃত হয়।

INT 80h এবং INT 2Eh এর মধ্যে পার্থক্য

বৈশিষ্ট্যINT 80hINT 2Eh
ব্যবহারলিনাক্স সিস্টেমে সিস্টেম কলের জন্য।পুরোনো DOS/Windows সিস্টেমে সিস্টেম কল।
রেজিস্টার ব্যবহারEAX, EBX, ECX, EDX ইত্যাদি।AX এবং অন্যান্য DOS রেজিস্টার।
অপারেটিং সিস্টেমলিনাক্স।DOS এবং পুরোনো Windows সিস্টেম।
বর্তমান ব্যবহারএখনও লিনাক্সে ব্যবহৃত হয়।আধুনিক উইন্ডোজে আর ব্যবহার হয় না।

সারসংক্ষেপ

INT 80h এবং INT 2Eh দুটি ভিন্ন ইন্টারাপ্ট যা লিনাক্স এবং পুরোনো উইন্ডোজ সিস্টেমে কোর সেবা কার্যকর করতে ব্যবহৃত হয়। INT 80h লিনাক্স সিস্টেমে ব্যবহৃত হয় এবং এখনও প্রাসঙ্গিক, যেখানে INT 2Eh মূলত পুরোনো DOS এবং Windows সিস্টেমে ব্যবহৃত হত এবং আধুনিক উইন্ডোজ সিস্টেমে তা আর ব্যবহৃত হয় না।

common.content_added_by

File I/O এবং Process Management এর জন্য System Calls

272
272

System Calls হলো এমন ফাংশন যা অপারেটিং সিস্টেমের কোর বা কার্নেলের সাথে যোগাযোগ করতে ব্যবহৃত হয়। Assembly Language প্রোগ্রামিংয়ে File I/O এবং Process Management পরিচালনার জন্য নির্দিষ্ট System Calls ব্যবহৃত হয়। System Calls ব্যবহার করে ফাইলের সাথে পড়া, লেখা, তৈরি করা এবং প্রক্রিয়া (process) তৈরি বা বন্ধ করার কাজ সম্পন্ন করা যায়।


File I/O এর জন্য System Calls

Assembly Language-এ ফাইলের সাথে ইনপুট এবং আউটপুট অপারেশন পরিচালনা করার জন্য নিচের System Calls গুলি ব্যবহৃত হয়:

  1. open:
    • ব্যবহার: ফাইল খোলার জন্য ব্যবহৃত হয়।
    • System Call Number (লিনাক্সের জন্য): 5
    • Registers:
      • EAX = 5 (System Call Number)
      • EBX = ফাইলের নামের পয়েন্টার
      • ECX = ফাইলের ওপেন মোড (যেমন read-only, write-only)
      • EDX = পারমিশন (যদি নতুন ফাইল তৈরি করা হয়)
    • উদাহরণ:

      MOV EAX, 5          ; open system call
      MOV EBX, file_name  ; ফাইলের নামের পয়েন্টার
      MOV ECX, 0          ; read-only মোড
      INT 0x80            ; system call interrupt
  2. read:
    • ব্যবহার: ফাইল থেকে পড়ার জন্য ব্যবহৃত হয়।
    • System Call Number: 3
    • Registers:
      • EAX = 3 (System Call Number)
      • EBX = ফাইল ডেসক্রিপ্টর
      • ECX = ডেটা পড়ার জন্য বাফারের পয়েন্টার
      • EDX = পড়ার জন্য বাইটের সংখ্যা
    • উদাহরণ:

      MOV EAX, 3          ; read system call
      MOV EBX, file_desc  ; ফাইল ডেসক্রিপ্টর
      MOV ECX, buffer     ; ডেটা বাফারের পয়েন্টার
      MOV EDX, 100        ; পড়ার জন্য বাইটের সংখ্যা
      INT 0x80            ; system call interrupt
  3. write:
    • ব্যবহার: ফাইলে বা স্ট্যান্ডার্ড আউটপুটে ডেটা লেখার জন্য ব্যবহৃত হয়।
    • System Call Number: 4
    • Registers:
      • EAX = 4 (System Call Number)
      • EBX = ফাইল ডেসক্রিপ্টর (স্ট্যান্ডার্ড আউটপুটের জন্য 1)
      • ECX = লেখার জন্য বাফারের পয়েন্টার
      • EDX = লেখার জন্য বাইটের সংখ্যা
    • উদাহরণ:

      MOV EAX, 4          ; write system call
      MOV EBX, 1          ; স্ট্যান্ডার্ড আউটপুট
      MOV ECX, buffer     ; লেখার জন্য ডেটা বাফার
      MOV EDX, 100        ; লেখার জন্য বাইটের সংখ্যা
      INT 0x80            ; system call interrupt
  4. close:
    • ব্যবহার: খোলা ফাইল বন্ধ করার জন্য ব্যবহৃত হয়।
    • System Call Number: 6
    • Registers:
      • EAX = 6 (System Call Number)
      • EBX = ফাইল ডেসক্রিপ্টর
    • উদাহরণ:

      MOV EAX, 6          ; close system call
      MOV EBX, file_desc  ; ফাইল ডেসক্রিপ্টর
      INT 0x80            ; system call interrupt

Process Management এর জন্য System Calls

Assembly Language-এ প্রসেস ম্যানেজমেন্টের জন্য ব্যবহৃত সাধারণ System Calls নিম্নরূপ:

  1. fork:
    • ব্যবহার: একটি নতুন প্রসেস তৈরি করার জন্য ব্যবহৃত হয়।
    • System Call Number: 2
    • Registers:
      • EAX = 2 (System Call Number)
    • ব্যাখ্যা: নতুন প্রসেসের ক্ষেত্রে EAX রেজিস্টারে 0 রিটার্ন হয় এবং প্যারেন্ট প্রসেসের ক্ষেত্রে এটি নতুন প্রসেসের PID রিটার্ন করে।
  2. execve:
    • ব্যবহার: বর্তমান প্রসেসের স্থান পরিবর্তন করে নতুন প্রোগ্রাম চালানোর জন্য ব্যবহৃত হয়।
    • System Call Number: 11
    • Registers:
      • EAX = 11 (System Call Number)
      • EBX = প্রোগ্রামের নামের পয়েন্টার
      • ECX = আর্গুমেন্টের পয়েন্টার
      • EDX = এনভায়রনমেন্টের পয়েন্টার
  3. exit:
    • ব্যবহার: বর্তমান প্রসেস সমাপ্ত করার জন্য ব্যবহৃত হয়।
    • System Call Number: 1
    • Registers:
      • EAX = 1 (System Call Number)
      • EBX = রিটার্ন কোড
    • উদাহরণ:

      MOV EAX, 1          ; exit system call
      MOV EBX, 0          ; রিটার্ন কোড 0 (সফল সমাপ্তি)
      INT 0x80            ; system call interrupt

সারসংক্ষেপ

Assembly Language-এ File I/O এবং Process Management পরিচালনার জন্য System Calls ব্যবহৃত হয়। File I/O পরিচালনার জন্য open, read, write, এবং close System Calls ব্যবহার করা হয়। Process Management এর জন্য fork, execve, এবং exit System Calls ব্যবহৃত হয়। এগুলি CPU এবং কার্নেলের মধ্যে যোগাযোগ করে কার্যকরী কার্যপ্রণালী সম্পন্ন করে এবং প্রোগ্রামের কার্যকারিতা নিশ্চিত করে।

common.content_added_by
টপ রেটেড অ্যাপ

স্যাট অ্যাকাডেমী অ্যাপ

আমাদের অল-ইন-ওয়ান মোবাইল অ্যাপের মাধ্যমে সীমাহীন শেখার সুযোগ উপভোগ করুন।

ভিডিও
লাইভ ক্লাস
এক্সাম
ডাউনলোড করুন
Promotion